//
// Created by zhou on 2021/10/23.
//
//可以使用滑动窗口方法，以s1的长度大小作为滑动窗口的大小
#include <algorithm>
#include <iostream>
#include <unordered_map>
#include <unordered_set>
using namespace  std;
class Solution {
public:
    bool checkInclusion(string s1, string s2) {
        int size=s1.length();
        int size1=s2.length();
        if(size>size1)return false;
        int right=size;
        unordered_multiset<char> map1;
        unordered_multiset<char> map2;
        for(int i=0;i<s1.length();i++){
            map1.insert(s1[i]);
            map2.insert(s2[i]);
        }

        for(int i=0;i<=s2.length()-size;i++){
            if(map1==map2)return true;
            else{
                    auto iter=find(map2.begin(),map2.end(),s2[i]);
                    if(iter!=map2.end())
                    map2.erase(iter);
                    map2.insert(s2[right]);
                    right++;
//                    map2.insert(s2[right]);
//                    right++;
            }

        }
        return false;
    }
};
int main(){
    string s1="ddac";
    string s2="dac";
    Solution solution;
    cout<<solution.checkInclusion(s2,s1);

}

